package com.gitee.chessboard.model.dictionary;

import com.gitee.chessboard.enums.DictionaryType;
import com.gitee.chessboard.manager.DictionaryManager;
import com.gitee.chessboard.model.word.Word;

import java.util.List;

/**
 * 字典的顶层接口
 *
 * @author 敲代码的旺财
 * @date 2021/11/17 16:35
 */
public interface Dictionary {
    /**
     * 设置字典管理器
     *
     * @param dictionaryManager 字典管理器
     */
    void setDictionaryManager(DictionaryManager dictionaryManager);

    /**
     * 获取字典名称
     *
     * @return 字典名称
     */
    String getDictionaryName();

    /**
     * 获取字典编码
     *
     * @return 字典编码
     */
    String getDictionaryCode();

    /**
     * 获取字典类型
     *
     * @return 字典类型
     */
    DictionaryType getDictionaryType();

    /**
     * 设置字典名称
     *
     * @param dictionaryName 字典名称
     */
    void setDictionaryName(String dictionaryName);

    /**
     * 设置字典类型
     *
     * @param dictionaryCode 字典类型
     */
    void setDictionaryCode(String dictionaryCode);

    /**
     * 设置字典类型
     *
     * @param dictionaryType 字典类型
     */
    void setDictionaryType(DictionaryType dictionaryType);

    /**
     * 获取所有词
     *
     * @return 词集合
     */
    List<Word> get();

    /**
     * 获取词
     *
     * @param wordCode 词编码
     * @return 词实例
     */
    Word get(String wordCode);

    /**
     * 添加词
     *
     * @param word 词
     */
    void add(Word word);

    /**
     * 删除词
     *
     * @param wordCode 词的编码
     */
    void del(String wordCode);

    /**
     * 删除词
     *
     * @param word 词
     */
    void del(Word word);

    /**
     * 保存当前字典
     */
    void saveSelf();

    /**
     * 删除当前字典
     */
    void delSelf();
}
